package com.example.rssreader.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.time.LocalDateTime;

/**
 * 文章实体类
 * 用于存储从RSS源抓取的文章信息
 * 
 * @author RSS Reader Team
 * @version 1.0.0
 * @since 2024-01-01
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("article")
public class Article {

    /**
     * 文章ID - 主键，自增
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * RSS源ID - 外键
     * 关联到rss_feeds表的id字段
     */
    @TableField("feed_id")
    private Long feedId;

    /**
     * 文章标题
     * 不能为空，最大长度500字符
     */
    @TableField("title")
    private String title;

    /**
     * 文章链接地址
     * 不能为空，最大长度1000字符
     */
    @TableField("link")
    private String link;

    /**
     * 文章摘要/描述
     * 可选字段，存储文章的简短描述
     */
    @TableField("description")
    private String description;

    /**
     * 文章完整内容
     * 可选字段，存储文章的完整HTML内容
     */
    @TableField("content")
    private String content;

    /**
     * 文章作者
     * 可选字段，最大长度100字符
     */
    @TableField("author")
    private String author;

    /**
     * 文章发布时间
     * 从RSS源获取的原始发布时间
     */
    @TableField("published_at")
    private String publishedAt;

    /**
     * 文章唯一标识符
     * 用于防重复，通常是RSS中的guid字段
     */
    @TableField("guid")
    private String guid;

    /**
     * 是否已读标记
     * false-未读，true-已读，默认为false
     */
    @TableField("is_read")
    private Boolean isRead;

    /**
     * 创建时间
     * 自动填充，记录文章入库时间
     */
    @TableField(value = "created_at", fill = FieldFill.INSERT)
    private String createdAt;

    /**
     * 更新时间
     * 自动填充，记录文章信息最后修改时间
     */
    @TableField(value = "updated_at", fill = FieldFill.INSERT_UPDATE)
    private String updatedAt;

    /**
     * 逻辑删除标记
     * 0-未删除，1-已删除
     */
    @TableLogic
    @TableField("deleted")
    private Integer deleted;
}